require 'watir'
include Watir
require 'test/unit'
require '../watir.config.rb'
require '../resources/functions.rb'
require 'win32ole'
require 'win32/process'


class TC_ManageIP_test < Test::Unit::TestCase
   
    def startup
        $IPStart = '192.168.0.1'
        $IPEnd ='192.168.0.255'
        $IPStart1 = rand(255).to_s+'.' +rand(255).to_s+'.' +rand(255).to_s+'.' +rand(255).to_s
       @@ie = Watir::IE.start($SITE_URL)
      end
    
    
    def ie
        if defined? @@ie
         @@ie
        else
         startup
         end
      end
    
    def test_0000
        require 'win32/process'
        $pid = Process.create(
        :app_name      => 'ruby ../resources/clickers.rb',
        :creation_flags  => Process::DETACHED_PROCESS
        ).process_id
      end  
    
    def test_01_verifyHomeText
        assert(ie.contains_text(/Community Server/))		
      end
      
    def test_02_verifyLoginLinksExist
        if !(ie.link(:text, 'Sign in').exists?)
          ie.goto($SITE_URL + 'logout.aspx')
          ie.refresh
          ie.goto($SITE_URL)
          ie.refresh
         end
	    end
    
    def test_03_navigateToLogin
        ie.link(:text, 'Sign in').click
        assert(ie.contains_text("Sign in name"))
      end
      
	  
	  def test_04_populateLoginForm
        ie.text_field(:id, /username$/).value = $ADMIN_USER
        assert(ie.text_field(:id, /username$/).verify_contains($ADMIN_USER))
        ie.text_field(:id, /password$/).value = $ADMIN_PASSWORD
        assert(ie.text_field(:id, /password$/).verify_contains($ADMIN_PASSWORD))
      end
      
	  
    def test_05_submitLoginForm
        if(ie.button(:id, /loginButton$/).exists?)
          ie.button(:id, /loginButton$/).click
        else
        ie.link(:id, /loginButton$/).click
        end
        test_01_verifyHomeText
      end
      
    def test_06_verifyControlPanel
        assert(ie.link(:text, /Control Panel/).exists?)
        ie.link(:text, /Control Panel/).click
        assert(ie.contains_text(/Announcements/))
        assert(ie.link(:text, /System Administration/).exists?)
        ie.link(:text, /System Administration/).click
        assert(ie.contains_text(/Announcements/))
      end
      
    
    def test_07_verifyControlPanelLinks
        assert_equal $SITE_URL + 'controlpanel/', ie.link(:text, 'Dashboard').href
        assert_equal $SITE_URL + 'controlpanel/setup.aspx', ie.link(:text, 'Administration').href
        assert_equal $SITE_URL + 'controlpanel/BlogAdmin/', ie.link(:text, 'Blog Administration').href
        assert_equal $SITE_URL + 'controlpanel/MediaGalleryAdmin/', ie.link(:text, 'Media Galleries Administration').href
        assert_equal $SITE_URL + 'controlpanel/Forums/', ie.link(:text, 'Forum Administration').href
        assert_equal $SITE_URL + 'controlpanel/HubAdmin/', ie.link(:text, 'Group Administration').href
        assert_equal $SITE_URL + 'controlpanel/Membership/membersearch.aspx?SelectedNavItem=BrowseMembers', ie.link(:text, 'Membership Administration').href
        assert_equal $SITE_URL + 'controlpanel/Settings/default.aspx', ie.link(:text, 'Site Administration').href
      end
      
    
    def test_08_navigateToSiteAdministration
        ie.goto($SITE_URL + 'controlpanel/Settings/default.aspx')
        assert(ie.contains_text('Site Administration'))      
      end
      
    
    def test_09_verifyLinksExist
        # Make sure that all of the links exist
        assert(ie.link(:text, 'Log Out').exists?)
        assert(ie.link(:text, 'Help').exists?)
        assert(ie.link(:text, 'Go to Site').exists?)
        assert(ie.link(:text, 'Dashboard').exists?)
        assert(ie.link(:text, 'Administration').exists?)
        assert(ie.link(:text, 'Telligent').exists?)
      end
      
    def test_10_navigateToManageIP
        ie.goto($SITE_URL + 'controlpanel/tools/ManageIP.aspx')
        assert(ie.text_field(:id,/IPStart$/).exists?)
        assert(ie.text_field(:id,/IPEnd$/).exists?)
        assert(ie.link(:id,/AddButton$/).exists?)
        ie.text_field(:id,/IPStart$/).value = $IPStart
        sleep 5
        ie.text_field(:id,/IPEnd$/).value = $IPEnd
        sleep 5
        ie.link(:id, /AddButton$/).click
        sleep 5
        ie.text_field(:id,/IPEnd$/).value =''
        ie.text_field(:id,/IPStart$/).value =''
      end
      
      
    def test_11_deleteRange
        assert(ie.table(:index,6).exists?)
        table1 = ie.table(:index,6)
        rows = table1.row_count
        rowcount1 = 1 
        ok = 0
        while rowcount1<=rows
          text1 = table1[rowcount1][1].text.split(' ')          
            if (text1[1]==$IPStart && text1[2] =='('+$IPEnd+')')
             sleep 2
             table1[rowcount1][2].link(:text, 'Delete').click
             break
            end  
            rowcount1=rowcount1+1
          end
      end
        
      
    def test_99_closeIE
        ie.close
      end  
      
    
    
  end
  
        